HTTP
HTTP(Hypertext Transfer Protocol)는 TCP 기반의 서버 - 클라이언트 사이 메시지 교환 프로토콜을 의미한다.
🧑🏻💻 HTTP 특징
✅ Stateless (무상태성)
HTTP는 무상태 프로토콜로, 통신이 끝나면 상태 정보를 유지하지 않는다. 이는 각 HTTP 요청이 다른 요청과 무관하며, 이전 요청과의 상태를 저장하거나 공유하지 않음을 의미한다.
무상태성은 서버에 부하를 줄이고 확장성을 높이는 데 도움이 되며, 클라이언트와 서버 간의 독립성을 제공한다. 이전 요청에 대한 정보를 저장하려면 쿠키나 세션과 같은 메커니즘을 사용할 수 있다.
✅ 지속 연결 (Persistent Connection)
HTTP/1.0에서는 요청과 응답이 끝나면 TCP 접속을 종료했다.(Connectionless) 이는 많은 오버헤드와 지연을 초래했다. 요청과 응답이 끝나면 접속을 종료한다.
HTTP/1.1부터 도입된 지속 연결은 하나의 TCP 연결을 재사용하여 여러 요청 및 응답을 처리하는 것을 뜻한다. 이로써 연결 설정 및 해제의 오버헤드가 감소하고, 페이지 로딩 시간이 단축되었다.
✅ URI로 리소스 식별 (URI - Uniform Resource Identifier)
- URI는 URL(Uniform Resource Locator) 및 URN(Uniform Resource Name)을 포함한다. URL은 리소스의 위치를 지정하고, URN은 리소스의 이름을 지정한다. 이를 통해 클라이언트는 원하는 리소스를 식별하고 요청할 수 있다.
🧑🏻💻 HTTP 메시지와 구조
✅ Request 메시지
클라이언트에서 서버로의 메시지로, 헤더(메서드 + URI + 프로토콜 버전), 공백라인, 바디로 구성되어있다.
✅ Response 메시지
서버에서 클라이언트로의 메시지로, 헤더(프로토콜 버전 + 상태코드 + 상태코드 설명), 공백라인, 바디로 구성되어있다.